package luj.game.robot.internal.concurrent.instance;

import luj.cluster.api.actor.ActorMessageHandler;
import luj.cluster.api.actor.ActorPreStartHandler;
import luj.cluster.api.actor.Tellable;
import luj.game.robot.internal.concurrent.parent.RobotBossDependency;
import luj.game.robot.internal.start.botinstance.RobotState;

public class RobotInstanceActor {

  public interface Handler<M> extends ActorMessageHandler<RobotInstanceActor, M> {
    // NOOP
  }

  public interface PreStart extends ActorPreStartHandler<RobotInstanceActor> {
    // NOOP
  }

  public RobotInstanceActor(RobotState robotState, RobotInstanceDependency dependency, int tickMsMin, int tickMsMax, Tellable bossRef, RobotBossDependency bossDep, Tellable adminRef) {
    _robotState = robotState;
    _dependency = dependency;
    _tickMsMin = tickMsMin;
    _tickMsMax = tickMsMax;
    _bossRef = bossRef;
    _bossDep = bossDep;
    _adminRef = adminRef;
  }

  public RobotState getRobotState() {
    return _robotState;
  }

  public RobotInstanceDependency getDependency() {
    return _dependency;
  }

  public Tellable getBossRef() {
    return _bossRef;
  }

  public RobotBossDependency getBossDep() {
    return _bossDep;
  }

  public int getTickMsMin() {
    return _tickMsMin;
  }

  public int getTickMsMax() {
    return _tickMsMax;
  }

  public Tellable getAdminRef() {
    return _adminRef;
  }

  private final RobotState _robotState;
  private final RobotInstanceDependency _dependency;

  @Deprecated
  private final int _tickMsMin;
  @Deprecated
  private final int _tickMsMax;

  private final Tellable _bossRef;
  private final RobotBossDependency _bossDep;

  private final Tellable _adminRef;
}
